# apps/tags/models.py
from django.db import models

from apps.tenants.models import Tenant


class Tag(models.Model):
    """
    标签模型
    对应数据库表: qb_tags
    """
    name = models.CharField(
        max_length=50,
        verbose_name="标签名称",
        help_text="标签名称，如：函数、几何、易错题"
    )
    category = models.CharField(
        max_length=50,
        null=True,
        blank=True,
        verbose_name="分类",
        help_text="标签分类，如：知识点、难度、题型"
    )
    description = models.TextField(
        null=True,
        blank=True,
        verbose_name="说明",
        help_text="标签说明"
    )
    used_count = models.IntegerField(
        default=0,
        verbose_name="使用次数",
        help_text="被使用次数（缓存优化）"
    )
    created_at = models.DateTimeField(
        auto_now_add=True,
        verbose_name="创建时间"
    )
    updated_at = models.DateTimeField(
        auto_now=True,
        verbose_name="更新时间"
    )

    tenant = models.ForeignKey(Tenant, on_delete=models.CASCADE, null=True, db_index=True, verbose_name="租户")

    class Meta:
        db_table = 'qb_tags'
        verbose_name = "标签"
        verbose_name_plural = "标签管理"
        indexes = [
            models.Index(fields=['tenant'], name='idx_tag_tenant'),
            models.Index(fields=['category'], name='idx_tag_category'),
        ]

    def __str__(self):
        return f"{self.name}({self.category})"

    def save(self, *args, **kwargs):
        """
        重写 save 方法，确保 updated_at 正确更新
        （Django 的 auto_now 已经处理，此方法可省略，除非有额外逻辑）
        """
        super().save(*args, **kwargs)